package com.tao.common.validator.validator;

import com.tao.common.validator.annotation.ListValue;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

public class ListvalueConstraintValidator implements ConstraintValidator<ListValue, Integer> {
	/**
	 *  获取校验的值, 就是在注解中通过vals 指定的值, 用于后续的校验, 根据实际情况可以做出调整
	 */
	private Set<Integer> set = new HashSet<>();

	/**
	 *  判断是否校验成功
	 * @param integer 就是被校验的值
	 * @param constraintValidatorContext 校验的上下文环境信息
	 * @return
	 */
	@Override
	public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
		return set.contains(integer);
	}

	/**
	 * 初始化方法, 获取注解中的值
	 * @param constraintAnnotation
	 */
	@Override
	public void initialize(ListValue constraintAnnotation) {
		int[] vals = constraintAnnotation.vals();
		for (int val : vals) {
			set.add(val);
		}
	}
}
